Enterprise and Service Provider Voice over Internet Protocol (VoIP) deployments increasingly use an application-layer control protocol, Session Initiation Protocol (SIP), (a.k.a. Session Initiated Protocol) as the session protocol of choice since there are many different types of network elements that use SIP signaling for VoIP, including telephones, proxies, Internet Protocol Private Branch Exchanges (IP-PBXs), Media Gateway, software bridges (SoftSwitches), Back-to-Back User Agents (B2BUAs), and Session Border Controllers. SIP is specified by an Internet Engineering Task Force (IETF) document Request For Comments (RFC) 3261, also denoted as IETF-RFC3261, which describes SIP as “an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences.”
SIP is a text-based protocol, and hence the parsing and building of messages may put a heavy load on various network elements. As the number of SIP VoIP calls increases, so too the processing load on various devices may also increase. This increase can create a bottleneck in some deployments. Worse, some non-terminal, or intermediately positioned network devices like Session Border Controllers handling SIP-to-SIP calls may actually handle two instances of VoIP legs, one sending and one receiving, thus leading to a rapid increase in processor and memory utilization. This processing and parsing burden may negatively impact system scalability, and/or reliability.
One suggested method to reduce the amount of text-based parsing is described in the SIP specification IETF-RFC3261 section 7.3.3 which teaches the use of compact header fields to represent common header field names in an abbreviated form. FIG. 1 shows an exemplary invite message 102 using full SIP headers, while FIG. 2 shows the exemplary invite message of FIG. 1 modified to include compact headers. The line indicators L01: to L06: are not part of the message content, but are merely used to identify particular lines in messages 102 and 202, respectively. For example, FIG. 1 line L02 recites “Via:SIP/2.0/UDP” while the corresponding line in FIG. 2 recites “v:SIP/2.0/UDP”, so that the full header field name “Via” is replaced with a compact header field name “v”. Similarly, FIG. 1 line L03 recites “From:” while the corresponding line in FIG. 2 recites “f:”, so that the full header name “From” field is replaced with a compact header field is “f”, and so on.
The use of compact headers may have only a minimal benefit since the bulk of the message may be the header content itself, not the header field descriptors, where the header content still needs to be parsed and re-built for received or sent messages. Accordingly, there is a need in the art for a method and system for enhancing the performance of SIP network elements.
Embodiments of the present invention and their advantages are best understood by referring to the detailed description that follows. It should be appreciated that like reference numerals are used to identify like elements illustrated in the figures.